約 4,062,956 件
https://w.atwiki.jp/study-java/pages/14.html
java
https://w.atwiki.jp/api_programming/pages/110.html
参考サイト Swingを使ってみよう - JavaDrive Swing - とほほのJava入門 下位ページ イベント処理 Content 流れ フレーム(JFrame) フレームの作成 パネル(JPanel) ボタン(JButton)ボタンをおした時の処理 ボタンのラベルの改行 ラベル(JLabel) テキストの表示JLabel JTextArea JTextPane イベント処理イベント処理の方法 レイアウト ダイアログを簡単に表示する 流れ フレーム(=ウィンドウ)をつくる フレームにボタンなどを貼り付ける(加える)フレーム←パネル←ボタン フレームを表示させる フレーム(JFrame) JFrame JFrame - とほほのJava入門 フレームの作成 JFrame frame = new JFrame("タイトル"); frame.setBounds(100, 100, 200, 160); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); 引数のないコンストラクタで作成された場合は、不可視である。 それを表示させるためにはsetVisibeleを使う frame.setVisible(true); java.awt.Window から継承されたメソッド setVisivle() フレームの中のパネル(、パネルに貼り付けるボタンなど)をどのようにレイアウトするか? frame.setLayout(LayoutManager manager) setLayout() パネル(JPanel) http //www.javadrive.jp/tutorial/jpanel/ http //www.geocities.jp/jetblackorange/Documentation/01_simpleFrame.htm ↑ここの言葉を借りて言えば「フレームが写真立て、パネルが写真」 ボタン(JButton) javax.swing.JButton http //www.javadrive.jp/tutorial/jbutton/ ボタンオブジェクトの生成 パネルオブジェクトに貼り付ける(Panel.add()) ボタンをおした時の処理 流れ ボタンが押される イベントが発行される イベントを受け取るボタン側にaddActionListenerメソッドを実行(処理する「クラス」を登録する) 登録するクラスは、ActionListerクラスをインプリメント登録するクラスの中で、actionPerformedメソッドを実装 処理を実行する ボタンのラベルの改行 html ... br/ ... /html でできる。他の方法もあるんだろうが。 ラベル(JLabel) http //www.javadrive.jp/tutorial/jlabel/ テキストの表示 JLabel 少し別格なのか?通常の状態では改行が効かない。htmlとして、brで改行を書くと効くとか書いてあった。 JTextArea プレーンなテキストを複数行表示できる。 http //www.javadrive.jp/tutorial/jtextarea/ JTextPane https //docs.oracle.com/javase/jp/6/api/javax/swing/JTextPane.html DocumentとJTextComponent - JavaDrive イベント処理 http //www.javadrive.jp/tutorial/event/index1.html https //docs.oracle.com/javase/jp/6/api/java/awt/event/ActionEvent.html イベント処理の方法 ActionListenerをimplementsしたクラスで、actionPerformedをオーバーライドする。 actionPerformed(ActionEvent e) 複数のボタンなどの部品に対して、一つのクラスでイベント処理をする場合には、どの部品から呼びだされたイベントかを識別する方法について処理する方法を記述する必要がある。 String str = actionevent.getActionCommand(); レイアウト レイアウトマネージャーの設定 - JavaDrive http //www.ne.jp/asahi/hishidama/home/tech/java/swing/layout.html ダイアログを簡単に表示する JOptionPane JOptionPane static で shorMessageDialogというものが準備されている
https://w.atwiki.jp/penta2/pages/11.html
GLANTANKへJavaを導入 Javaの実行環境を導入しようとするも アーキテクチャがarmであるためなかなか導入できず・・・ 途方にくれているとfree-javaの 玄箱への導入記録を発見したので 早速試してみた(゜o゜)!! 参考ページ chicken developer http //www22.atwiki.jp/anthony/pages/17.html 1.まずはsource.listにcontrib non-freeを追加 GLANTANK /# vi /etc/apt/sources.list deb http //ftp.jp.debian.org/debian etch main contrib non-free deb-src http //ftp.jp.debian.org/debian etch main contrib non-freedeb http //security.debian.org etch/updates main contrib non-free deb-src http //security.debian.org etch/updates main contrib non-free 2.続いてapt-getするためupdateの実行 GLANTANK /# apt-get update 3.あるかな~ということで確認 GLANTANK /# apt-cache search free-java-sdk free-java-sdk - Complete Java SDK environment consisting of free Java tools 4.あることが確認できたのでインストール GLANTANK /# apt-get install free-java-sdk 5.Javaが入っているかの確認 GLANTANK /# java -version SableVM version 1.13 compile date and time 2006-09-09 15 34 20 UTC gcc version 4.1.2 20060901 (prerelease) (Debian 4.1.1-13) real life brokenness features enabled signal based exception detection copying garbage collection bidirectional object layout direct-threaded interpreter おお!入ってる・・・ 今回はここまで
https://w.atwiki.jp/shiryu_technical/pages/5.html
JDK1.7から追加されたファイル移動API(java.nio.file.Files) JDK1.7から新しいファイル移動APIが追加されました。 今まで、Java言語ではアトミックなファイル移動が出来ませんでした。それが、このAPIの追加により可能になります。ただし、このアトミックなファイル移動ですが、移動元フォルダと移動先フォルダのドライブが異なる場合には使用できません。 (アトミックなファイル移動がどういうことが理解できれば、当然といえば当然の仕様です。) ファイル移動指定例 この例では、Cドライブの直下にあるファイルをDドライブの直下にファイルを移動させようとしています。しかし、「java.nio.file.AtomicMoveNotSupportedException」が発生します。 (ちなみに、CドライブとDドライブは論理的に分かれているだけです。物理は一緒のドライブ) public static void main(String[] args) { String src = C \\テスト.txt ; String dst = D \\テスト.txt ; move(src, dst); } public static void move(String srcPathStr, String dstPathStr) { FileSystem fileSystem = FileSystems.getDefault(); Path srcPath = fileSystem.getPath(srcPathStr); Path dstPath = fileSystem.getPath(dstPathStr); try { // StandardCopyOption.ATOMIC_MOVEはドライブをまたがる場合は使用不可 Files.move(srcPath, dstPath, StandardCopyOption.ATOMIC_MOVE); } catch (IOException e) { e.printStackTrace(); } } 発生例外 java.nio.file.AtomicMoveNotSupportedException C \テスト.txt - D \テスト.txt ファイルを別のディスク ドライブに移動できません。 at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java 299) at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java 287) at java.nio.file.Files.move(Files.java 1395) at jp.co.sapporo.toyohira.apps.Main.move(Main.java 25) at jp.co.sapporo.toyohira.apps.Main.main(Main.java 15)
https://w.atwiki.jp/thiroyoshi/pages/47.html
senでwiki辞書を使う 以下で紹介されてる方法でできるらしい http //d.hatena.ne.jp/nodchip/20090309/1236615706 形態素解析 これまで、形態素解析にcabochaを使ってたわけですが、javaでMecabを実装したとかいうのがあったみたいで…。 http //ultimania.org/sen/ つーかYahoo!がそういうのしてくれるAPIを公開していたらしい。アンテナは大きく広げておかないといかんもんだなぁ… http //developer.yahoo.co.jp/webapi/jlp/da/v1/parse.html 下のサイトはサンプル公開してる。 http //www.nilab.info/zurazure2/001036.html 形態素解析の辞書 ChasenとMecabの辞書として使えるものだそうな。公開されてる精度がよすぎてびっくり。 http //www.tokuteicorpus.jp/dist/ Java使う人にはとてもよい http //nextindex.jp/java/ Stringの文字エンコーディング 普通にプログラムするには大して問題にならないファイル名の文字コード。 webでデータ公開するとかなるとなんかこれをよくミスる。 で、見つけたよさげなサイト。参考に http //hp.vector.co.jp/authors/VA017148/java/encoding.html デーモンスレッド 使えれば使う 参考URL http //memolet.blog22.fc2.com/blog-entry-792.html GC overhead limit exceeded 調べてみたら、ガベージコレクションに時間かかりすぎやから止まった、ってことらしい。 ガベージコレクション自体はメモリの自動解放とかしてくれるけど、メモリ使用量が多いとかでスワップが多くなったりすると処理がかかるみたいだ。 で、その時間がかかりすぎるとエラー吐いて止まるってのが上のメッセージらしい。 解決にはメモリをしっかり確保すればいいってのは当たり前だが、どうしても頻発する場合などには実行時の引数に以下のものを加えるといい。 -XX -UseGCOverheadLimit 参考URL http //confluence.atlassian.co.jp/display/DOC/Fix+Out+of+Memory+errors+by+Increasing+Available+Memory#FixOutofMemoryerrorsbyIncreasingAvailableMemory-OutOfMemoryError%3AGCoverheadlimitexceeded http //ameblo.jp/f-o-p/entry-10537149611.html MySQLと連携 javaのコードからMySQLを使う場合に、JDBCドライバが必要になる。 これはMySQLのサイトからダウンロードができる。 Javaとの連携なので、downloadの中の「Connector/J」をダウンロードする。 ダウンロードしたファイルを解凍すると、いろいろ入っているが、その中にjarがある。 名前は、「mysql-connector-java-5.0.8-bin.jar」だ。 これのクラスパスを通せば、あとはjavaのファイルの中で適切なコマンドを使っていけばいい。 参考URL http //mountainbigroad.jp/fc5/mysql_java.html MySQLからの日本語が文字化け まだいろいろ試していないもののメモ。 文字化けなので文字コードに問題があることは明白。 この場合にするべきは、各所での文字コードの設定。 「MySQLのデフォルト設定」 「javaコード内でのurl指定時」 くらいだが、これでも文字化けする場合があるのだ。 これはMySQLのバージョンを下げればいいこともあるらしい。 この問題があるのは、4.1.7でらしい。これをバージョンダウンすれば解消されるとさ。 またちょっとしたコードの書き換えでもいけるらしい。 str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect"); みたまんま、コード変換するみたいだ。これを取得した値に対して行ってやると解消されるとか。 でも、バージョンを下げるとこんなもんは必要ないみたい。 参考URL http //oshiete.goo.ne.jp/qa/1118005.html javaをコマンドラインで サーバーなどでjavaを動かすために覚えた。 しかし、コマンドを詳しく覚えているはずもなく… パスを通す .bashrcにjarファイルのパスをかたっぱしから通すように指定。 これぐらい重くもなんともないだろ! 実際に使ってるスクリプトは以下 jars=`ls /home/hiroyoshi/system/jar` for jar in ${jars[@]} do export CLASSPATH=$CLASSPATH /home/hiroyoshi/system/jar/$jar done やってることは簡単で、jarのファイル名を配列で全部とってきて、それにパスを当てはめてexportしてるだけ。 これでディレクトリjarにjarを追加するだけで、ログインするときに毎回読み込んでくれる。 もうパスを通す必要はない!便利! コンパイル 使ったのは実際には以下のコマンド javac -sourcepath XX/src -d XX/bin/ XX/src*/*.java XXはディレクトリ名(プロジェクト名とか) javac javaのコンパイルコマンド -sourcepath ソースファイルの場所指定オプション -d クラスファイルの出力場所指定オプション これで、srcに保存されいるパッケージでまとめられているjavaソースファイルをきちんとコンパイルできる。 また、このコンパイル時にbin内にパッケージも作られる。 ただし、srcとbinは事前に作っておく必要があるのは言うまでもない。 実行 ちょっと泥臭い方法になってしまったというか、メモるほどの事ではないが一応。 java -Xmx1g main/Main これをbinで行う。ほんとはプロジェクトのホームで実行したかったけど仕方ない…。 ファイルなどを生成するのでも、プログラム内でディレクトリ指定すればbin内には作らなくて済むので。 RSSリーダー 研究でブログを扱っているので作ってみたところのメモ。 ほとんどコピペやけど、プログラムってそんなもん。 使ってるライブラリ ROME:本プログラムのキモ。RSSを扱うためのメソッドが揃ってるみたい。 基本はこのROMEで処理します。依存とかの関係で ROME-Fetcher JDOM も必要です。JDOMはxmlを扱うライブラリで、これがないとROMEは動かない。 それぞれのライブラリはバイナリをダウンロードする。 JDOMは圧縮形式でダウンロードでき、解凍するとディレクトリができる。 この中からjdom.jarを見つけ出す。 サンプル public class RSSReader { @SuppressWarnings("unchecked") public static void main(String[] args) { //rdfでもxmlでもOK String url = "http //blog.livedoor.com/xml/article_ranking.rdf"; try { URL feedUrl = new URL(url); SyndFeedInput input = new SyndFeedInput(); SyndFeed feed = input.build(new XmlReader(feedUrl.openStream())); ArrayList SyndEntry entries = (ArrayList SyndEntry ) feed.getEntries(); System.out.println("Blog Title:" + feed.getTitle()); System.out.println("======================="); Iterator SyndEntry it = entries.iterator(); SyndEntry entry; while(it.hasNext()){ entry = it.next(); System.out.println("Title:" + entry.getTitle()); System.out.println("Date:" + entry.getPublishedDate()); System.out.println("Link:" + entry.getLink()); System.out.println("URI:" + entry.getUri()); System.out.println("Description:" + entry.getDescription().getValue()); System.out.println("---------------------"); } System.out.println("size = " + entries.size()); } catch (FeedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 参考URL スマートネットワーク開発ブログ JavaでRSSのパースをしてくれるライブラリ ROME 正規表現 すごく便利な正規表現。でもすごくわかりにくい正規表現。 そんな正規表現のメモ。 (特にJavaで使えるというものです) 全角記号 [^ぁ-んァ-ヴ一-龠0-90-9a-zA-Zー〜、] 総当たりではあるが、使えるのでよし。 意味は「ひらがなとかカタカナとか以外」 半角記号 \p{Punct} javaのAPIで定義されているものそのまま。 ただし、使うときにはこれをこのまま書くだけだと、「エスケープシーケンスは…」と怒られるので、こいつをエスケープしてやる。 つまり、 line = line.replaceAll("\\p{Punct}",""); ってすると、line内の半角記号は一掃される。 半角カタカナ [。-゚+] そのまま文字コードにのっとったもの。つまり、意味は ー。「」、・ヲァィゥェォャュョッタアイウエオカキクケコサシスセソミチツテトナニヌネノハヒフヘホマムメモヤユヨラリルレロワン゙゚ です。 また、正規表現の[a-z]のような「-」(ハイフン)の範囲表現はASCIIコードに準じたものをなっている。(参考URL参照) 例えば、コード表によると「!」から「/」を続けて範囲指定([!-/])できるが、「?」までする([!-?])と数字も選択されてしまう。 参考URL フジハラボ:Javaで入力チェックに使える正規表現まとめ ASCII文字コード
https://w.atwiki.jp/syusei/pages/4.html
Java Java Technology Java API Reference Bug Database Sun Developer Connection dev.java.net Java Community Process JCP 日本語 JavaOne Online Java Tutorial Java Blue Print Catalog Swing Labs Swing Sample Glassfish Java Tips JavaSE5.0の新機能 J2SE5.0虎の穴 Java SE 6 Mustang新機能 Nishigaya's Weblog Java-Source.net てんぷらメモ JavaSE6でのパフォーマンスの監視と診断 JMonkeyEngine
https://w.atwiki.jp/asayamayuki/pages/12.html
Javaについて3回生同士の情報共有に使ってください。 test2 -- asayamayuki (2007-02-26 17 08 52) 名前 コメント
https://w.atwiki.jp/java_pro/pages/70.html
Javaプログラムを実行する際の引数について復習しましょう。 コマンドプロンプトでプログラムのソースコード が置かれているフォルダに移動して。 javac Hogehoge.java と「javac」というコマンドの後にファイル名を指定してあげると コンパイルができます。 コンパイルをすると「Hogehoge.class」のように クラスファイルが同じフォルダに生成されます。 ここで java Hogehoge と「java」というコマンドの後にクラス名を指定してあげると プログラムが実行されます。 コマンドラインの引数(実行時の引数) プログラムを実行する際に、メソッドのように引数を渡すことが できます。 プログラムはmainメソッドから実行されますよね。 public static void main(String[] args) というふうにmainメソッドを宣言すると思いますが、ここの 「args」というString配列にコマンドラインの引数(実行時の引数)が 渡されます。 たとえば、 java Hogehoge moge fuga java のようにプログラムを実行したとすると "moge fuga java"の部分がコマンドラインの引数として渡されます。 これはプログラムで String args[] = {"moge", "fuga", "java"}; と宣言されたような形になります。 なので、この実行時にはargs[0]には"moge"という文字列が入っています。 ※プログラムを実行する際に任意に引数を渡すことができるということなので、 コマンドラインの引数を渡していなければargs[0]などは存在しない。 ※コマンドラインの引数として渡すことが出来るのは文字列のみ ○3級の人向けの課題。 コマンドライン実行時に受け取った引数を番号を付けて順番に 表示するプログラム「ArgsTest01.java」を作りましょう。 例) java ArgsTest01 hogehoge mogemoge fugafuga あなたが入力したのは 1 hogehoge 2 mogemoge 3 fugafuga java ArgsTest01 あなたが入力したのは ※JCPadでコマンドラインの引数を指定して実行する場合理は、 コマンド(C)の右のエリアに直接コマンドを入力しましょう。
https://w.atwiki.jp/johzue/pages/25.html
参考にしたページ http //www.hellohiro.com/ マニュアル Tomcat4.0 ServletAPI(ちょっと古いかな) http //www.jajakarta.org/tomcat/servletapi/servletapi-4.0/docs-ja/index.html JDK5.0 http //java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html Tomcat5.5設定 ApacheもTomcatも無事に連携ができたら、JSPとサーブレットの動作確認 サーブレット デフォルトだと、http //ipaddress/servlets-examples/servlet/HelloWorldExample これでHello World !!とか表示される。 Javaのクラスファイル自体は /usr/local/tomcat5/webapp/servlets-examples/WEB-INF/classes/HelloWorldExample.class に、置かれており http //ipaddress/(ルート)が/usr/local/tomcat5/webapp/ROOTディレクトリに 対応づいており http //ipaddress/servlets-examplesが/usr/local/tomcat5/webapp/servlets-examples/ に対応づいている。 servlet-name HelloWorldServlet /servlet-name servlet-class HelloWorldServlet /servlet-class /servlet servlet-mapping servlet-name HelloWorldServlet /servlet-name url-pattern /servlet/HelloWorldServlet /url-pattern /servlet-mapping /web-app ファイルはclassesフォルダの中にHelloWorldServlet.classを置いて 読み出すときは前述の通り。 web.xmlのinvokeの項目(確か2つある)の コメント部分を解除すると、マッピングを関係なく表示できる。 これはセキュリティのため、公開時は元に戻す(コメント化)する必要がある。 ディレクトリを指定して、その中身を見るにはserver.xmlを init-param param-name listings /param-name param-value true /param-value /init-param trueに変更する必要がある 必要なければやらなくて良い。 jspファイルはマッピング関係なく直接読みにいけばよい 文字化け Debian文字化け DebianではJ2SDKパッケージで日本語文字化けするので、それの対応 cp $JAVA_HOME/jre/lib/fontconfig.Redhat.8.0.properties.src \ $JAVA_HOME/jre/lib/fontconfig.properties コピーしたら、それをviで開いて %s /misc-kochi /-sazanami-/g (kochiの後にスペースが必要) 入力フォームの文字化け(GET) Tomcat5.XからsetCharEncodingメソッドの文字コードの適応がなくなった。 クリの文字コードはUTF-8を使うのがルールらしくて、Tomcatもそれに対応したみたい。 それでもやっぱり、基本EUC-JPで統一したいから tomcatのconfディレクトリにあるserever.xmlの一部を編集しなければならない Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true"/ 最後にあるuseBodyEncodingForURIの項目を追加すればOK これでGETでとっても文字化けしなくなる 参考:http //www.atmarkit.co.jp/fjava/rensai3/mojibake03/mojibake03.html Netbeansについて Javaの開発環境といえばElipseだったが、最近はNetBeansがSunのサポートとなってシェアが伸びてきている。 利点:標準でTomcat等がバンドルされており導入が楽 欠点:モジュールが少ない NetBeansのコンパイル文字コード指定 「ツール」→「詳細オプション」→「編集」→「Javaソース」→「デフォルトエンコーディング」で指定 コンパイル時のエンコード指定は 「プロジェクトプロパティ」→「構築」→「コンパイル」の追加のコンパイラオプションで指定 -encoding EUC-JP 参考:http //www.deftrash.com/blog/archives/2006/05/netbeans_1.html
https://w.atwiki.jp/javawa/pages/12.html
プログラムを始める前に・・・ プログラムとは 初めての出力 HelloWorld (おまけ1) Javaの正しい実行 数値演算 変数「int」と代入 四則演算プラスワン 文字列処理 文字列の足し算 数字と数値 やっと入力 (おまけ2) プログラム引数 実行中に入力する。 (おまけ3)コンソールプログラム→対話型→GUIへ もっと演算 条件分岐 論理演算 正しいか?間違いか?